#include<bits/stdc++.h>
using namespace std;
int n,m,k,ret;
const int N=1e5+5;
int vis[N];
map<int,int> mp;
vector<int> g[N];
void dfs(int p,int fa,int path){//
    if (mp[p]==1){
        mp[p]=0;
        ret=path;
    }
    for (auto x:g[p]){
        if (x!=fa){
            dfs(x,p,path+1);
        }
    }
}
int main(){
    cin>>n>>m;
    for (int i=1;i<=n;i++){
        cin>>k;
        if (k!=-1){
            g[k].push_back(i);
        }
    }
    for (int i=1;i<=m;i++){
        cin>>k;
        vis[k]=1;
        ret=0;
        for (int i=0;i<N;i++){
            if (vis[i]>0)mp[i]=1;
        }
        dfs(1,0,1);
        cout<<ret<<endl; 
    }
    
    return 0;
}
